/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package ejercicio2;
import java.util.Random;
import java.util.Scanner;

/**
 *
 * @author Alejandro
 */
public class ejercicio9 {
    /* *********************************
     * Rellena el array
    ************************************/
    static void IntroducirAleatorioArray (int[][] ar) {
        Random rand = new Random();
        for(int i=0;i<ar[0].length;i++) 
        {
            for(int j=0;j<ar[i].length;j++) 
            ar[i][j] = rand.nextInt(1000);
        }
    }
    static void MostrarAleatorioArray (int[][] ar) {
        System.out.println("Mi array original es ");
        for(int[] a : ar) {
            for(int b : a) {
                System.out.print(b+" -- ");
            }
            System.out.println();
        }
    }
    static void ModificarArrays (int[][]ar1,int[][] ar2) {
        int[] minimoFilaArrayA,maximoFilaArrayB;
        for(int i = 0;i<ar1[0].length;i++) {
            minimoFilaArrayA = CalculaMaximoOMinimo(ar1[i],"min");
            maximoFilaArrayB = CalculaMaximoOMinimo(ar2[i],"max");
            ar1[i][minimoFilaArrayA[1]] = maximoFilaArrayB[0];
            ar2[i][maximoFilaArrayB[1]] = minimoFilaArrayA[0];
        }
    }
     /* ****************************************************
     * Calcula el maximo o el minimo de cada fila del array
     * Devuelve un array con dos posiciones:
     * posicion 1 --> minimo o maximo
     * posicion 2 --> indice en el vector
    ********************************************************/
    static int[] CalculaMaximoOMinimo (int[] vector,String cad) {
        int[] resultado = new int[2];
        int pos = 0;
        if (cad == "max") 
        {
            int max = vector[0];
            for(int i=0;i<vector.length;i++) {
                if(max < vector[i])
                {
                    max = vector[i];
                    pos = i;
                }
            }
            resultado[0] = max;
            resultado[1] = pos;
            return resultado;
        } 
        else if (cad == "min") 
        {
           int min = vector[0];
           for(int i=0;i<vector.length;i++) {
               if(min > vector[i])
                {
                    min = vector[i];
                    pos = i;
                } 
           }
           resultado[0] = min;
           resultado[1] = pos;
           return resultado;
        }
        else 
        {
            return resultado;
        }
    }
    public static void main(String[] args)  {
        int elementos;
        Scanner reader = new Scanner(System.in);
        System.out.print("¿Cuantos elementos van a tener la matriz cuadrada?");
        elementos = reader.nextInt();
        int[][] matriz1 = new int[elementos][elementos];
        int[][] matriz2 = new int[elementos][elementos];
        IntroducirAleatorioArray(matriz1);
        IntroducirAleatorioArray(matriz2);
        /* *********************************
         * Se muestra arrays originales
         ************************************/
        MostrarAleatorioArray(matriz1);
        MostrarAleatorioArray(matriz2);
        
        ModificarArrays(matriz1,matriz2);
        /* *********************************
         * Se muestra arrays modificados
         ************************************/
        MostrarAleatorioArray(matriz1);
        MostrarAleatorioArray(matriz2);
    }
}